home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio / Ray Dream Studio (CDRAYD1) (Ray Dream) (1995).iso / DREAMSDK.WIN / INCLUDE / RDCARRAY.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-21  |  1.4 KB  |  66 lines  |  [TEXT/mdos]

  1. /* $Id: rdcarray.h 1.5 1995/02/27 12:27:07 JOHN Exp $ */
  2.  
  3. #ifndef __RDCARRAY__
  4. #define __RDCARRAY__
  5.  
  6. #ifndef __RDLIST__
  7. #include "RDList.h"
  8. #endif
  9.  
  10. class RDArray;
  11.  
  12. // Size limit for a chunk in bytes:
  13. #define kRDChunkyArrayLimit    32768
  14.  
  15.  
  16. class RDChunkyArray {
  17. public:
  18.     RDChunkyArray(short elementSize, long chunckLimit=kRDChunkyArrayLimit);
  19.     ~RDChunkyArray();
  20.     
  21.     void *First();
  22.     void *Last();
  23.     void DeleteAll();    
  24.     void Delete(long i);            // Warning: slow proc
  25.     void* At(long i);                    // Warning: slow proc
  26.     void AtPut(long index, void* item);
  27.     long GetSize() const {return fSize;}
  28.     void InsertLast(void *elem);
  29.     void PreAllocate(long nbElements, Boolean setSize=false);
  30.     void CopyData(RDChunkyArray* targetArray);
  31. protected:
  32.     void BasicDeleteAll();
  33.     void GetSubArray(long i, RDArray*& subArray, long& subIndex);
  34.     
  35.     RDList    fArrayList;           // list of RDArray
  36.     short fElementSize;
  37.     short fNbrElemInChunk;
  38.     long    fSize;
  39. private:
  40.     friend class RDChunkyArrayIterator;
  41. //DO NOT USE 
  42.     friend class TGrid;
  43.     void Delete(void *elem); //does not work exept by side effect in TGrid
  44.     };
  45.  
  46.  
  47. class RDChunkyArrayIterator {
  48. public:
  49.     RDChunkyArrayIterator(const RDChunkyArray *anArray);
  50.     void *First();
  51.     Boolean More() {return fCurItem!=NULL;}
  52.     void *Next();
  53. protected:
  54.     const RDChunkyArray *fArray;
  55.     long fListIndex;
  56.     long fArrayIndex;
  57.     RDArray *fCurArray;
  58.     void *fCurItem;
  59. private:
  60.     friend class RDChunkyArray;
  61.     };
  62.  
  63.  
  64.  
  65. #endif
  66.